#include "VistaDeEntidad.h"

VistaDeEntidad::VistaDeEntidad(const Entidad* _modelo, const Dimensiones_t& _dimensiones_sprite, const int _largo_animacion) : modelo(_modelo)
{
	spritesheet = CargarImagen("graficos/char.png");
	largo_animacion = _largo_animacion;
	dimensiones_sprite = _dimensiones_sprite;
	CrearClips();
}

void VistaDeEntidad::Dibujar(SDL_Surface* superficie, const Punto& posicion)
{
	SDL_Rect offset;
	offset.x = posicion.X();
	offset.y = posicion.Y();
	SDL_BlitSurface( spritesheet , &clip[modelo->Orientacion()][1] , superficie , &offset );
}

Punto VistaDeEntidad::PosicionEnElMapa()
{
	// TODO: que las dimensiones no esten hardcodeadas
	// Que el ultimo termino dependa del momento del movimiento/animacion (smooth)
	return modelo->Posicion()*TILESIZE - Punto(-25,-25) + Punto(0,0);
}

void VistaDeEntidad::CrearClips()
{
	forn(i,4)
	{
		clip[i] = new SDL_Rect[largo_animacion];
		forn(j,largo_animacion)
		{
			clip[i][j].w = dimensiones_sprite.Ancho();
			clip[i][j].h = dimensiones_sprite.Alto();
			clip[i][j].x = j*dimensiones_sprite.Ancho();
			clip[i][j].y = i*dimensiones_sprite.Alto();
		}
	}
}
